package com.ruoyi.project.system.function.mapper;

import com.ruoyi.project.system.base_family_info.domain.BaseFamilyInfo;
import com.ruoyi.project.system.function.domain.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
*
*
* @Author: 郑吉志
*
* @Create: 23.2.22
**/
@Mapper
public interface FunctionMapper {

    DetailDB selectByDetail(@Param("db") DetailDB db);

    /**
     * 根据年份查看该年份的收入总表对应的是否封停状态
     * @param year
     * @return
     */
    Integer selectStateByYear(@Param("year") Integer year);

    /**
     * 根据id,fid,年份更新busi_income_data表的内容
     * @param overviewDB
     */
    void updateOverviewDB(OverviewDB overviewDB);

    /**
     * 更新busi_income_data表将改年份是否封停状态设置为flag，
     * @param flag
     * @param year
     */
    void sealByYear(Integer flag,Integer year);

    /**
     *取出一级收入与对应字段的键值对的map集合
     * @return
     */
    List<DictMap> getMap();

    /**
     * 在busi_income_data表插入一条记录
     * @param overviewDB
     */
    void saveOverviewDB(OverviewDB overviewDB);

    /**
     *插入busi_income_detail的一条记录
     * @param db
     */
    void saveDetail(DetailDB db);

    /**
     *将一个list集合插入表busi_income_detail中
     * @param list
     */
    void saveDetailList(List<DetailDB> list);


    /**
     *根据年与户号在busi_income_data中查找一整条记录
     * @param fid
     * @param year
     * @return
     */
    OverviewDB selectOverviewDB(String fid,int year);

    /**
     * 通过户编号在base_family_info中查找户主姓名，人口数，及耕种面积等
     * @param fid
     * @return
     */
    BasicInfo selectBasicInfo(String fid);

    /**
     * 在户主表中查找未销户的户，并且将户编号返回给list集合
     * @return
     */
    List<String> selectFidList();

    /**
     * 通过姓名，人口，耕种面积查找该户的户编号
     * @param name
     * @param num
     * @param area
     * @return
     */
    String getFid(String name,int num,double area);

    /**
     *从名为"busi_income_data"的表中选取"ID"列，并按照ID倒序排列，最后只返回一行记录（即限制返回结果集数量为1）。
     * 这个查询的目的是查找"busi_income_data"表中最新一行的ID值。
     * @return
     */
    Integer getLastId();

    /**
     * 从busi_income_data表中将所选年份相同的年份全部返回成一个list集合
     * @param year
     * @return
     */
    List<Integer> selectYear(int year);

    /**
     *在busi_income_detail中查询收入id所符合条件的的一列传送给一个对象并且组成一个对象集合
     * @param id
     * @return
     */
    List<DetailDB> selectDetailDBList(int id);

    /**
     *根据姓名在base_family_info表中选择姓名为该姓名的姓名，作为一个对象
     * * @param name
     * @return
     */
    String selectName(String name);

    /**
     * 在base_family_info表中选择未销户的户编号作为一个集合
     * @return
     */
    List<String> selectNumFarmer();

    /**
     * 查询是否有该年份的信息
     * @param year
     * @return
     */
    OverviewDB selectYearByYear(int year);

    /**
     * 根据户编号查询农户信息
     * @param fid
     * @return
     */
    BaseFamilyInfo selectHuZhu(String fid);
}
